package com.aabte.design2.structural.wrapper;

/**
 * 装饰基类和其他组件遵循相同的接口。该类的主要任务是定义所有具体装饰的封
 * 装接口。封装的默认实现代码中可能会包含一个保存被封装组件的成员变量，并
 * 且负责对其进行初始化。
 *
 * @author Daniel
 * @version 1.0
 * @date 2020/5/3
 */
public class DataSourceDecorator implements DataSource {

    private DataSource wrapper;

    public DataSourceDecorator(DataSource wrapper) {
        this.wrapper = wrapper;
    }

    @Override
    public void writeData(String data) {
        System.out.println("DataSourceDecorator#writeData, data = " + data);
        wrapper.writeData(data);
    }

    @Override
    public String readData() {
        System.out.println("DataSourceDecorator#readData, data = " + wrapper.readData());
        return wrapper.readData();
    }
}
